package com.fcscs.ecms.gwt.client;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.fcscs.ecms.domain.GlobalHotelEntity;
import com.fcscs.ecms.domain.GlobalLanguage;
import com.fcscs.ecms.domain.GlobalModuleInfo;
import com.fcscs.ecms.domain.GlobalModuleType.ModuleType;
import com.fcscs.ecms.domain.GlobalPicture;
import com.fcscs.ecms.domain.GlobalRoomType;
import com.fcscs.ecms.domain.GlobalText;
import com.fcscs.ecms.domain.HotelEntityView;
import com.fcscs.ecms.domain.MdlEntertainmentDynamicField;
import com.fcscs.ecms.domain.MdlEntertainmentElmts;
import com.fcscs.ecms.domain.MdlEntertainmentMain;
import com.fcscs.ecms.domain.MdlHelpMain;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

@RemoteServiceRelativePath("../gwt/ecmsCommonService")
public interface ECMSCommonService extends RemoteService {
	GlobalLanguage saveGlobalLanguage(GlobalLanguage entity);

	GlobalText saveGlobalText(GlobalText entity);

	GlobalPicture saveGlobalPicture(GlobalPicture entity);

	GlobalPicture updateGlobalPicture(GlobalPicture entity);

	// This Mothed using for Hotel Entity, Hotel Room Type List
	GlobalHotelEntity saveGlobalHotelEntity(GlobalHotelEntity entity);

	int saveGlobalHotelRoomTypeList(int idHotel, List<Integer> listRoomType);

	int editGlobalHotelRoomType(int idHotel, List<Integer> oldlistRoomType,
			List<Integer> newRoomType);

	int deleteHotelentity(GlobalHotelEntity entity, List<Integer> roomTypeList);

	int editGlobalHotelEntity(List<Map<String, String>> listtext,
			GlobalHotelEntity entity, GlobalPicture[] llistPic);

	int saveGlobalHotelEntity(List<Map<String, String>> listtext,
			GlobalHotelEntity entity, GlobalPicture[] llistPic);

	// Get Roomtype
	List<GlobalRoomType> getRoomType();

	List<String> getText(int id, String langId);

	// Get hotel roomtype list
	List<Integer> getHotelRoomTypeList(int idHotel);

	List<GlobalPicture> getImage(int id);

	List<GlobalHotelEntity> getHotel(int id);

	List<GlobalHotelEntity> getHotels();

	HotelEntityView getHotelEntityView(int idHotel);

	boolean deleteHotelRoomTypeList(int idHotel, List<Integer> roomTypeList);

	boolean deleteHotel(int idHotel);

	Map<String, String> getLanguageMap();

	MdlEntertainmentMain getEntertainment(int orgId, int propId,
			boolean isSchedule);

	MdlEntertainmentMain getEntertainment(int entMainId);

	List<MdlEntertainmentDynamicField> getEntertainmentDynamicFieldList();

	MdlEntertainmentMain saveEntertainment(int orgId, int propId, int userId,
			boolean isSchedule, Date startDate, Date startTime,
			Map<String, String> titleTextMap,
			Map<String, String> subTitleTextMap, byte[] menuPictureData,
			String url, List<MdlEntertainmentElmts> entElmtsList);

	void saveEntertainmentTemplate(int orgId, int propId, int userId,
			Map<String, String> titleTextMap,
			Map<String, String> subTitleTextMap, byte[] menuPictureData,
			String url, List<MdlEntertainmentElmts> entElmtsList,
			String templateName);

	GlobalModuleInfo getGlobalModuleInfoTemplateByName(int orgId, int propId,
			ModuleType type, String templateName);

	List<GlobalModuleInfo> getGlobalModuleInfoTemplateList(int orgId,
			int propId, ModuleType type);

	// Help

	GlobalModuleInfo getModuleHelp(int orgId, int propId, boolean isSchedule);

	GlobalModuleInfo getModuleHelp(int moduleId);

	GlobalModuleInfo saveModuleHelp(int orgId, int propId, int userId,
			boolean isSchedule, Date startDate, Date startTime,
			Map<String, String> titleTextMap,
			Map<String, String> subTitleTextMap, byte[] menuPictureData,
			List<MdlHelpMain> helpMainList);

	void saveHelpTemplate(int orgId, int propId, int userId,
			Map<String, String> titleMap, Map<String, String> subTitleMap,
			byte[] menuPictureData, List<MdlHelpMain> helpMainList,
			String templateName);
}
